package com.icode.lock8;

import java.util.concurrent.TimeUnit;

/**
 * @Author: my_code
 * @Create: 2020-12-10 16:49
 *
 * Q:3
 * 会先打印“方法B”：
 *    两个线程都是同一个对象的对用方法，A线程拿到对象锁，
 * B线程中执行的是普通方法，AB线程互补影响，B线程直接打印，A线程等待4秒后打印，所以先打印“方法B”
 */
public class Test2 {
    public static void main(String[] args) {
        Phone2 phone = new Phone2();

        new Thread(()->{phone.methodA();}).start();

        //延时2秒 让线程先拿到锁
        try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}

        new Thread(()->{phone.methodB();}).start();

    }


}

class Phone2{


    public synchronized void methodA(){
        try {TimeUnit.SECONDS.sleep(4);} catch (InterruptedException e) {e.printStackTrace();}
        System.out.println("方法A");
    }


    //没有锁
    public void methodB(){
        System.out.println("方法B");
    }
}